package com.coursehub.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

/**
 * API网关应用程序主类
 * 
 * 功能说明：
 * 1. 统一入口：所有客户端请求通过网关进入系统
 * 2. 智能路由：根据路径将请求路由到微服务或单体系统
 * 3. 渐进式拆分：支持逐步将功能从单体系统迁移到微服务
 * 4. 跨域处理：统一处理CORS问题
 * 5. 负载均衡：自动发现和负载均衡微服务实例
 * 
 * 路由策略：
 * - /api/users/** -> 用户管理微服务 (已拆分)
 * - /api/auth/** -> 用户管理微服务 (认证功能)
 * - /api/** -> 单体系统 (其他未拆分功能)
 * 
 * @author CourseHub Team
 * @version 1.0.0
 */
@SpringBootApplication
@EnableEurekaClient
@EnableConfigurationProperties
public class ApiGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayApplication.class, args);
        System.out.println("\n" +
            "=================================================\n" +
            "    API网关启动成功！\n" +
            "    端口: 8089\n" +
            "    功能: 统一入口，智能路由\n" +
            "    \n" +
            "    路由规则:\n" +
            "    - 用户API: /api/users/** -> 微服务\n" +
            "    - 认证API: /api/auth/** -> 微服务\n" +
            "    - 其他API: /api/** -> 单体系统\n" +
            "    \n" +
            "    访问地址: http://localhost:8089\n" +
            "    管理端点: http://localhost:8089/actuator\n" +
            "    网关路由: http://localhost:8089/actuator/gateway/routes\n" +
            "=================================================\n");
    }
}